A computer system generally comprises at least one internal hard disk and a motherboard fitted with a microprocessor and RAM (Random Access Memory) for the purpose of executing computer programs stored on the hard disk. The microprocessor is typically suitable to execute a start-up program of the computer system, the start-up program typically comprising the instruction statements to run an operating system. The computer system's internal hard disk stores such a start-up program and which is typically associated with a predetermined operating system.
A start-up program and a predetermined operating system may also be available on an external data medium, such as a CD-ROM (Compact Disk Read Only Memory) provided with the computer system when it is fitted with a corresponding drive, or via another type of medium that can be connected to the computer system, via a USB (Universal Serial Bus) port for example.
An initial start-up strategy applied by the microprocessor can also be defined in a Basic Input/Output System, commonly called a BIOS, which resides in a read-only memory (ROM) on the motherboard. The BIOS can establish a hierarchy for the choice of a start-up, giving, for example, priority to the CD-ROM start-up program, if it is properly positioned in the computer system's drive and if its start-up program is ready to be executed, then to the start-up program on another medium, if it is connected to a USB port on the computer system and if its start-up program is ready to be executed, and then by default to the start-up program on the internal hard disk.
Moreover, even if the start-up strategy applied by the microprocessor places a priority on executing the start-up program of the internal hard disk of the computer system, it typically can be configured through the BIOS, or in other selectable ways such as by switches, to activate an operating system stored on an external device, for example a portable device connected to the USB port of the computer system.
Booting a computer system from a portable device can provide advantages for computer users in that a computer user can walk up to a computer with his or her own working environment carried in their pocket including for example the user's data, the user's programs, the user's operating system, the user's environmental parameters, or other data and/or code of use by the holder of the portable device. The computer can then potentially be booted and can present to the user the environment desired.
Relative to the problem of providing a portable device for carrying out such a booting operation, reference is made to the pending U.S. patent application of FILEE, Alain, and MARTIN, Rene. Entitled “DEVICE, SYSTEMS, AND METHOD FOR SECURELY STARTING UP A COMPUTER INSTALLATION” filed on Jan. 7, 2009, and assigned to the same assignee as named herein. This application is on file in the United States Patent and Trademark Office as patent application Ser. No. 12/319,444, still pending and which document, in its entirety, is hereby incorporated by reference.
This application discloses a device for secured startup of a computer installation that includes means for securing use of data and executable codes from the device to the computer installation. However, the patent application does not address the problems described herein of accommodating variations in the environments or operating systems of computer systems.
Hardware elements of a computer system are not however standardized and may vary widely from one computer to another, even computer systems used within the same company. For example, a Personal Computer may be required to support attachment of hardware and/or software elements from hundreds or even thousands of manufacturers. Interface to this hardware is typically provided to an operating system or other program through “low level” programs called “drivers”. These hardware and software specific driver programs are typically written by the manufacturers of the computer hardware or software elements.
The need for driver programs by an operating system is not easily anticipated because of the large number and types of hardware and software elements which might need to be supported. Also, even on a specific computer system, the list of attached hardware components may change from day to day, or even more frequently. Detecting the attached hardware components of a specific computer system also takes time. Keeping within the operating system, a known list of attached hardware components may decrease the time to boot a machine because time is not needed to “detect” all of the attached hardware components. For these reasons, some popular operating systems have “installed” as a part of the operating system only those drivers currently needed by the operating system, or only the most commonly used drivers.
This presents a potential problem in booting any selected computer system from a single portable device with a user's desired “guest” operating system. If the guest operating system does not include all the drivers necessary to support the selected computer system's currently attached hardware, and/or if the guest operating system does not provide for automatic installation of drivers for any attached hardware, then it may be difficult or impossible to complete the booting of the selected computer with the desired guest operating system and desired user environment, and also with support for the attached hardware.